大部分 PM 會接觸到的測試,是手動模擬真實使用者的使用流程,看看畫面、功能上有沒有與原來的設計有不一樣的地方,但如果到了快上線的階段,才做最後的大驗收,修復的時程跟成本也會更高,所以在 Devops 中,才會有「測試左移」(Shift Left Testing)的概念。
「測試左移」的主要核心就是將測試階段提前,從原來流程的右邊(尾聲)移到左邊(前端),當越早可以發現問題並進行修復時,對於產品的上線時間就越不會在後期出現無法預期的風險。
在 CI/CD Pipeline 中,包含單元測試(Unit Test)、整合測試 (Integration Test)、端對端測試 (End-to-End Test)等就是不同時期/規模的自動化測試。
單元測試(Unit Test)是工程師寫完一個功能後,就可以進行測試的最小單元,在這個階段會測試的功能主要是像邏輯、計算等互動。
整合測試 (Integration Test)則是多個單元整合成一個新功能時,確認程式之間是否有異常狀況發生,例如會員登入、購物車功能,模擬實際的資料庫或外部服務。
端對端測試 (End-to-End Test)就會從用戶的角度,模擬整套的使用者流程,從最剛開始的登入、瀏覽商品、加入購物車到結帳完成,進行完成從前端到後端的流程。
自動化測試的流程會由撰寫測試腳本開始,測試腳本寫的內容就像是把驗收條件轉化成程式碼,讓電腦可以理解使用這會進行的操作步驟,接著就會選擇自動化工具來執行,只要工程師將開發好的程式推上 Github 後,Pipeline 就會開始自動化測試的流程,並且提供測試報告,總結總共進行了幾次測試、幾次成功、幾次失敗,和在哪裡失敗。
自動化測試對於 Devops 的效益即是將風險提前揭示,避免到了要產品上線前,或是上線後,才需要團隊投入緊急修復的時間,更可以確保產品使用的穩定。